<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 将obj设置为空对象
        var obj = new Object();

        // objRef现在是另一个对象的引用
        var objRef = obj;

        // 修改原来对象的一个属性
        obj.oneProperty = true;

        // 这两个变量引用的是同一个对象
        console.log(obj === objRef);// true

        // 这里其实是多个变量引用一个对象，然后更改一个变量的属性，另外一个对象也会更改，
        // 两个对象可以同时被修改

        // 创建一个数组
        var items = new Array('one', 'two', 'three');

        // 创建数组的一个引用
        var itemsRef = items;

        // 将一个元素添加到原数组中
        items.push('four');

        console.log(items === itemsRef);// true

        // 注意：引用的只能是具体的对象，而不是另一个引用
        // 将items设置为字符串数组
        var item = new Array('one', 'two', 'three');

        // itemRef为item的引用
        var itemRef = item;

        // 将item改为一个新对象
        item = new Array('new', 'array');

        // item 和 itemRef指向不同的对象了
        // 看似是自修改对象，其实产生了一个非引用对象
        // 在执行字符串连接操作时，结果总是新的字符串，并非原字符串的修改版本
        console.log(item === itemRef);// false
    </script>

</body>

</html>